package com.smart.community.region.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.smart.community.commons.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDate;

/**
 * 住户信息实体类
 * 专注于个人信息管理，支持非系统用户
 * 
 * @author Wu.Liang
 * @since 2025-07-28
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sc_resident")
public class Resident extends BaseEntity {
	private static final long serialVersionUID = -9011920166317312841L;

	/** 关联用户ID（可为空，支持非系统用户） */
    @TableField("user_id")
    private Long userId;
    
    /** 真实姓名 */
    @TableField("real_name")
    private String realName;
    
    /** 身份类型：1-身份证，2-护照，3-港澳通行证，4-台湾通行证 */
    @TableField("identity_type")
    private Integer identityType;
    
    /** 身份证件号 */
    @TableField("identity_no")
    private String identityNo;
    
    /** 性别：0-未知，1-男，2-女 */
    @TableField("gender")
    private Integer gender;
    
    /** 出生日期 */
    @TableField("birthday")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthday;
    
    /** 联系电话 */
    @TableField("phone")
    private String phone;
    
    /** 邮箱 */
    @TableField("email")
    private String email;
    

    
    /** 学历 */
    @TableField("education")
    private String education;
    
    /** 职业 */
    @TableField("profession")
    private String profession;
    
    /** 工作单位 */
    @TableField("work_unit")
    private String workUnit;
    
    /** 籍贯 */
    @TableField("native_place")
    private String nativePlace;
    
    /** 紧急联系人 */
    @TableField("emergency_contact")
    private String emergencyContact;
    
    /** 紧急联系电话 */
    @TableField("emergency_phone")
    private String emergencyPhone;
    
    /** 车辆信息 */
    @TableField("vehicle_info")
    private String vehicleInfo;
    
    /** 宠物信息 */
    @TableField("pet_info")
    private String petInfo;
    

    
    /** 特殊需求 */
    @TableField("special_needs")
    private String specialNeeds;
    
    /** 相关证件图片（JSON数组） */
    @TableField("images")
    private String images;
    
    /** 状态：0-已搬出，1-正常居住，2-暂时外出 */
    @TableField("status")
    private Integer status;
} 